package gdconf

import (
	"server_cluster/common/logger"
)

// 道具使用配置表

const (
	ItemUseTypeReward             = 1 // 获得奖励
	ItemUseTypeAddServerBuff      = 2 // 添加BUFF
	ItemUseTypeAddGlobalExp       = 3 // 添加经验 被动使用
	ItemUseTypeAddRole            = 4 // 添加角色
	ItemUseTypeUnlockHomeBuilding = 5 // 解锁家园建筑
)

type ItemUseConfig struct {
	ItemId int32    `csv:"ID" gorm:"primary_key;autoIncrement:false"` // 道具id
	Param  IntArray `csv:"Func,omitempty"`                            // 道具使用参数
	CdTime int32    `csv:"Cd_time,omitempty"`                         // 使用CD
}

func (i *ItemUseConfig) TableName() string {
	return "config_item_use"
}

func (g *GameDataConfig) saveItemUseConfig() {
	saveTableToDb[ItemUseConfig](g.Db, readTable[ItemUseConfig](g.CsvPathPrefix+"ItemActive.csv"))
}

func (g *GameDataConfig) loadItemUseConfig() {
	g.GameDataMaps.ItemUseConfigMap = make(map[int32]*ItemUseConfig)
	for _, itemUseConfig := range loadTableFromDb[ItemUseConfig](g.Db) {
		g.GameDataMaps.ItemUseConfigMap[itemUseConfig.ItemId] = itemUseConfig
	}
	logger.Info("ItemUseConfig Count: %v", len(g.GameDataMaps.ItemUseConfigMap))
}

func GetItemUseConfig(itemId int32) *ItemUseConfig {
	value, exist := CONF.GameDataMaps.ItemUseConfigMap[itemId]
	if !exist {
		logger.Error("[ConfigNotFound] ItemUseConfig, itemId: %v", itemId)
		return nil
	}
	return value
}

func GetItemUseConfigMap() map[int32]*ItemUseConfig {
	return CONF.GameDataMaps.ItemUseConfigMap
}
